import { createRouter, createWebHistory } from 'vue-router'
import { ElMessage } from 'element-plus'
const routes = [
  {
    path: '/',
    name: 'index',
    component: () => import('../views/index/index.vue'),
    // 路由重定向
    redirect: '/user',
    // 嵌套路由
    children: [
      // 用户
      {
        path: '/user',
        name: 'user',
        component: () => import('../views/user/index.vue')
      },
      // 角色
      {
        path: '/role',
        name: 'role',
        component: () => import('../views/role/index.vue')
      },
      // 菜单
      {
        path: '/menu',
        name: 'menu',
        component: () => import('../views/menu/index.vue')
      },
      // 其他页面
      {
        path: '/other',
        name: 'other',
        component: () => import('../views/other/index.vue')
      },
    ]
  },
  // 登录页面 ---不需要侧边栏
  {
    path: '/login',
    name: 'login',
    component: () => import('../views/login/index.vue')
  },
  {
    path: '/404',
    name: '404',
    component: () => import('../views/404/index.vue')
  }
]

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})

// 导航守卫
router.beforeEach((to, from, next) => { // 前置守卫beforeEach
  // 参数： to:即将要进入的目标; from:当前导航正要离开的路由; next:执行下一步
  // 可以有的两个返回值： false 、 路由地址

  // 业务思路：
  // 判断用户是否登录：如果已登录，用户想进入登录页面，跳转到首页； 如果未登录，用户想进首页，不让进，跳转到登录页面
  if (!localStorage.getItem('token')) {
    // 未登录
    // 进登录页，让进
    if (to.path == '/login') {
      next()
    } else {
      ElMessage.error('请重新登录！')
      next('/login')
    }
  } else {
    // 已登录
    if (to.path == '/login') {
      next('/')
    }
  }
  next()
})

export default router